home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-09-18 | 7.1 KB | 156 lines | [TEXT/CWIE] |
- NetSprocket 1.1
- Release Notes
- ---------------
-
- Please report all bugs to sprockets@adr.apple.com!
-
-
- What's New?
- -----------
-
- NetSprocket 1.1 adds CFM-68K support, and has the following fixes and additions:
-
- • The NSpPlayerLeftMessage now includes a field for the name of the player who
- left the game. Previously, you only got the playerID, but since the player
- was done there was no way to perform a GetInfo to get their name.
-
- CAVEAT I: Be advised that this is a new feature to NetSprocket 1.1 and is
- NOT backwards compatible with pre-1.1 builds. If you use this field you must
- make sure that your are using NetSprocket 1.1 or newer. You can get the version
- number with the NSpGetVersion() call.
-
- In short, make sure that everyone in the game is using 1.1 or newer if you
- plan to use this field of the structure.
-
- • Bug that disallowed the creation of more than one game object at a time
- has been fixed. You are now only limited by other system resources,
- such as memory or networking ports. Keep in mind if you try to host
- multiple games that you will get an error back if you try to host multiple
- games with the same game name (for AppleTalk) or with the same port (for IP).
-
- • A significant problem was found under heavy flow (traffic) conditions
- that could cause data to be delivered out of order. This has been fixed.
-
- • If you specify an empty string (not a null string!) for the "type" parameter
- to NSpDoModalJoinDialog, NetSprocket will use the game id (passed to
- NSpInitialize) to search for games on the AppleTalk network. This matches
- the default behavior for NSpGame_Host.
-
- We have included a new test program that should provide a better example of
- how to effectively use NetSprocket. The most important thing to note is how
- NetSprocket messages are handled both synchronously and asynchronously. This
- method prevents problems where user actions, such as a mouse-down, could
- prevent the main event loop from calling NSpMessage_Get, and thereby cause
- a buffer overflow problem.
-
- The number one problem we've seen with people using NetSprocket is apps running
- out of memory. The reason this happens is that NetSprocket presents a
- message API to the application. If you have, say, a 50K message, NetSprocket
- doesn't hand that message to the client application until all 50K are received.
- This model makes NetSprocket much more suceptible to low memory problems that
- other, data-oriented, networking APIs. There are three things you can
- do to minimize this kind of problem.
- 1. Use small messages ( < 1K) as often as is practical
- 2. Give NetSprocket as much memory as you can spare
- 3. Use the async message hander
-
- NetSprocket will still function if you don't do these things, but end user
- conditions will be much more likely to cause your app problems.
-
- You should always check return values from NetSprocket functions. Failure to
- do so is reckles, and will only cause you and your customers headaches.
-
- What's coming?
- --------------
- Due to the significant changes that have taken place at Apple recently, we
- have been forced to cut back out engineering efforts in many areas, including
- NetSprocket. The Win95 version will not be ready as planned, and we will
- be making changes only in modest increments.
-
- NetSprocket (and the other Sprockets) are still supported, though, and we'll
- continue making improvements as needed. Please send bug reports or feature
- requests to sprockets@adr.apple.com
-
-
- Release Components
- ------------------
-
- NetSprocket Release Notes - this file
- NetSprocket.h - the header file to compile with.
- NetSprocketLib - release version of the library
- NetSprocketDebugLib - debugging version of the library
- NewNSpTest - test program
- NewNSpTest.µ - Code Warrior 11 project to build test
- NewNSpTest Sources - sources for test program
- NetSprocketLib68K - CFM-68K release version
- NetSprocketDebugLib68K - CFM-68K debugging version of the library
- NewNSpTest68K - new 68K test program
- NewNSpTest68K.µ - Code Warrior 11 project to build test
-
- WARNING: don't place both the debugging and non-debugging versions of the
- library in the search path or you will not be sure which version you will be
- using.
-
- Dependencies
- ------------
-
- NetSprocket requires OpenTransport version 1.1.1 or later.
-
- NetSprocket68K requires the CFM-68K 4.0 update, available from Apple
- Software Updates
-
- NetSprocket requires the latest Universal Headers -- version 2.1.2 or later.
- You can find them on E.T.O. #20, the MacOS SDK CD-ROMs, Apple's web-site, or
- a number of other locations.
-
-
- Getting the Most out of NetSprocket
- -----------------------------------
-
- To get the optimal performance out of NetSprocket, design your game to send
- "Normal" messages that contain less than 550 bytes of data. This allows
- NetSprocket to use datagram-level delivery for both TCP/IP and AppleTalk.
- Using "Registered" messages can cause a 2-50% network performance degradation,
- depending on a number of factors, including network bandwith, utilization,
- message size, and send frequency.
-
- All messages, except ones sent from a player to himself, are sent through the
- host. Therefore, the host is one "hop" from any other player, and two non-host
- players are always two "hops" apart.
-
- Sending a message to a group is not as efficient as sending to everyone in the
- game, or to a single player. It is usually more efficient than sending to each
- individual in the group separately.
-
- You CAN NOT send messages at VBL (or any other interrupt) time with NetSprocket
- 1.0. You should schedule a deferred system task, or just wait until system
- task time before sending. You CAN however, call NSpMessage_Get at interrupt
- time. We generally recommend against all interrupt-time calls to the Game
- Sprockets.
-
- The number of players in a NetSprocket game is limited only by memory (and
- networking resources, such as available ports). If you exepect to handle lots
- of players (14+), you need to make sure you give NetSprocket sufficient memory
- and queue elements when you initialize it. If you get send failed or memory
- error message from NetSprocket, try giving it more memory.
-
- If you have a situation where your game has players whose network throughput is
- greatly disparate, you need to make sure you don't choke the slow person. For
- example, if you have 4 players on AppleTalk over Ethernet, and you have a fifth
- player join the game over a 28.8k PPP connection, and your fast machines are
- sending messages 30 times a second each, you're going to quickly gag the
- newcomer with too much data, and the host will simply not be able to deliver
- messages as quickly as you generate them. The newcomer will be disconnected
- after approximately 20 messages have been queued up, waiting for flow control
- to lift before delivering them. You can avoid this type of problem by
- throttling down your game's send rate to allow the newcomer to participate.
- You can also avoid it by sending "Junk" messages instead of Normal.
-
- NetSprocket 1.0 does not implement Round-Trip-Time or throughput functions.
- You can implement your own RTT and thruput functions on top of
- the NetSprocket API yourself, though.
-
- Known Bugs
- ----------
-
- Host renegotiation does not work.